package cn.myiotest.test5;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test1 {
    public static void main(String[] args) throws IOException {
        /*需求：
            一个文件里面存储了班级同学的姓名，每一个姓名占一行。
            要求通过程序实现随机点名器。

          运行结果要求：
            被点到的学生不会再被点到。
            但是如果班级中所有的学生都点完了， 需要重新开启第二轮点名。

          核心思想：
               点一个删一个，把删除的备份，全部点完时还原数据。

        */
        String src = "move/names5.txt";
        String backups = "move/namesBackup.txt";
        List<String> nameList = getNameList(src);
        if (nameList.isEmpty()){
            nameList = getNameList(backups);
            //5.2 把所有的数据写到初始文件中
            writeFile(src,false, nameList.toArray(new String[0]));
            //5.3 删除备份文件
            new File(backups).delete();
        }
        Collections.shuffle(nameList);
        String remove = nameList.remove(0);
        // writeFile(src,false, String.valueOf(List.of(nameList)));
        writeFile(src,false, nameList.toArray(new String[0]));
        writeFile(backups,true, remove);

        System.out.println("点名："+remove.split("-")[0]);

    }

    private static void writeFile(String pathFile, boolean isAppend, String... names) throws IOException {
        try(BufferedWriter bw = new BufferedWriter(new FileWriter(new File(pathFile), isAppend))){
            for (String name : names) {
                bw.write(name);
                bw.newLine();
            }
        }
    }

    private static List<String> getNameList(String file){
        List<String> nameList = new ArrayList<>();
        try (BufferedReader br = new BufferedReader(new FileReader(file))){
            String line;
            while ((line = br.readLine())!=null){
                nameList.add(line);
            }
        }catch (IOException e){
            e.printStackTrace();
        }
        return nameList;
    }
}
